﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EntityLayer;
namespace DataLayer.DAO
{
    public class clsDocumentoDetalleDAO
    {
        private BDCALLCENTEREntities ContextoDeObjs = new BDCALLCENTEREntities();
        public bool Insertar(DocumentoDetalle Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("DocumentoDetalle", Obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public bool Modificar(DocumentoDetalle obj)
        {

            try
            {
                ContextoDeObjs.AttachTo("DocumentoDetalle", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();

                return true;
            }
            catch (Exception)
            {
                return false;

            }
        }
        public bool Eliminar(DocumentoDetalle obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("DocumentoDetalle", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public List<DocumentoDetalle> listar()
        {
            List<DocumentoDetalle> lista = new List<DocumentoDetalle>();
            var q = from c in ContextoDeObjs.DocumentoDetalle
                    select c;
            lista = q.ToList();
            return lista;
        }
        public List<DocumentoDetalle> ListarDetalle()
        {
            List<DocumentoDetalle> lista = new List<DocumentoDetalle>();


            return lista;
        }
        public List<DocumentoDetalle_Result> ListarDocumentoetalle(String nropedido)
        {
            List<DocumentoDetalle_Result> lista = new List<DocumentoDetalle_Result>();
            var q = from c in ContextoDeObjs.usp_DocumentoDetalle(nropedido)
                    select c;
            lista = q.ToList();
            return lista;
        }
        public List<EliminarDocumentoDetalle_Result> EliminarDocumentoDetalle(int empresa, String tipodoc, String nropedido)
        {
            List<EliminarDocumentoDetalle_Result> lista = new List<EliminarDocumentoDetalle_Result>();
            var q = from c in ContextoDeObjs.usp_EliminarDocumentoDetalle(empresa, tipodoc, nropedido)
                    select c;
            lista = q.ToList();
            return lista;
        }
        public List<VerificarDocumentoEstado_Result> VerificarDocumentoEstado(int empresa, String tipodoc, String nropedido)
        {
            List<VerificarDocumentoEstado_Result> lista = new List<VerificarDocumentoEstado_Result>();
            var q = from c in ContextoDeObjs.usp_VerificarDocumentoEstado(empresa, tipodoc, nropedido)
                    select c;
            lista = q.ToList();
            return lista;
        }
        public List<DetalleVentaCancelacion_Result> DetalleVentaCancelacion(int empresa, String tipodoc, String nropedido)
        {
            List<DetalleVentaCancelacion_Result> lista = new List<DetalleVentaCancelacion_Result>();
            var q = from c in ContextoDeObjs.usp_DetalleVentaCancelacion(empresa, tipodoc, nropedido)
                    select c;
            lista = q.ToList();
            return lista;
        }
        public Boolean AprobarDocumentoDetalle(int empresa, String tipodoc, String nropedido)
        {
            int cant = 0;
            var q = from c in ContextoDeObjs.usp_AprobarDocumentoDetalle(empresa, tipodoc, nropedido)
                    select c;
            cant = Convert.ToInt16(q.ToList()[0].result.ToString());
            Boolean ok = (cant > 1) ? true : false;
            return ok;
        }
    }
}
